﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Text.RegularExpressions;

using FrbaBus.Core;
namespace FrbaBus.GenerarViaje
{
    public partial class GenerarViaje : Form
    {
        public string patente;
        public string Servicio;
        public string Origen;
        public string TipoServicio;
        public string Destino;
        public string IDRecorrido;
        public string fecha;
        public GenerarViaje()
        {
            InitializeComponent();
        }

        public static string tiposervicio = "";
        private void button1_Click(object sender, EventArgs e)
        {
            
            Seleccionar_Recorrido frm = new Seleccionar_Recorrido(this);
            frm.ShowDialog();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            tiposervicio = textBox6.Text;
            fecha = dateTimePicker1.Value.ToString("yyyy-MM-dd");
            Seleccionar_Micro frm = new Seleccionar_Micro(this);
            frm.ShowDialog();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            int date = Convert.ToInt32(dateTimePicker1.Value.ToString("yyyyMMdd"));
            int date12 = int.Parse(dateTimePicker1.Value.ToString("yyyyMMdd") + comboBox1.Text);
            int date2 = Convert.ToInt32(dateTimePicker2.Value.ToString("yyyyMMdd"));
            int fechasalida = int.Parse(dateTimePicker1.Value.ToString("yyyyMMdd") + comboBox1.Text);
            int fechaestimada = int.Parse(dateTimePicker2.Value.ToString("yyyyMMdd") + comboBox2.Text);
            string year = dateTimePicker1.Value.ToString("yyyy");
            string month = dateTimePicker1.Value.ToString("MM");
            string day = dateTimePicker1.Value.ToString("dd");
            DateTime today = Convert.ToDateTime(System.Configuration.ConfigurationManager.AppSettings["Fecha"]);
            int todaydate = int.Parse(today.ToString("yyyyMMdd") + string.Format("{0:HH}", Convert.ToDateTime(System.Configuration.ConfigurationManager.AppSettings["Fecha"])));

            if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "" || textBox4.Text == "" || comboBox1.Text == "")
            {
                MessageBox.Show("Faltan Datos por ingresar. Asegurece de seleccionar un Recorrido, un Micro y una Fecha-Hora");

            }
            else if (date12 <= todaydate)
            {
                MessageBox.Show("Debe seleccionar una fecha y hora de salida posterior a la fecha actual.");
            }
            else if (fechaestimada <= fechasalida)
            {
                MessageBox.Show("Debe seleccionar una fecha de salida estimada mayor a la fecha de salida.");
            }
            else if (fechaestimada > (fechasalida + 100))
            {
                MessageBox.Show("La fecha de salida estimada no puede superar las 24hrs a partir de la fecha de salida.");
            }
            else
            {
                DBManager db = new DBManager();
                SqlCommand consulta2 = new SqlCommand("select ALL_IN.existeviaje4('" + textBox2.Text + "','" + textBox1.Text + "','" + textBox3.Text + "','" + year + "','" + month + "','" + day + "')");
                SQLResponse r = db.executeQuery(consulta2);
                if (r.result.Rows[0][0].ToString() == "True")
                {
                    MessageBox.Show("Ya existe un viaje con esos datos. Modifique los datos y vuelva a generar el viaje.");
                }
                else
                {
                    SqlCommand consulta3 = new SqlCommand("select ALL_IN.existeviaje3('" + textBox2.Text + "','" + textBox1.Text + "','" + textBox3.Text + "','" + year + "','" + month + "','" + day + "')");
                    SQLResponse r3 = db.executeQuery(consulta3);
                    if (r3.result.Rows[0][0].ToString() == "True")
                    {
                        DialogResult dialogResult = MessageBox.Show("¿Desea crear el viaje especificado?", "Creacion de Viaje", MessageBoxButtons.YesNo);
                        if (dialogResult == DialogResult.Yes)
                        {
                            SqlCommand consulta = new SqlCommand("UPDATE ALL_IN.Viaje set baja = 0, fecha_salida =  Convert(DateTime,'" + date.ToString() + " " + comboBox1.Text + ":00',120), fecha_llegada_estimada = Convert(DateTime,'" + date2.ToString() + " " + comboBox2.Text + ":00',120) where patente = '" + textBox2.Text + "'and id_recorrido = '" + textBox5.Text + "' and year(fecha_salida)= '" + year + "' and month(fecha_salida)= '" + month + "' and DAY(fecha_salida)= '" + day + "'");
                            db.executeQuery(consulta);
                            MessageBox.Show("Se a generado el viaje");
                            textBox1.Text = "";
                            textBox2.Text = "";
                            textBox3.Text = "";
                            textBox4.Text = "";
                            textBox5.Text = "";
                            textBox6.Text = "";
                            comboBox1.Text = "";

                        }
                    }
                    else
                    {
                        DialogResult dialogResult2 = MessageBox.Show("¿Desea crear el viaje especificado?", "Creacion de Viaje", MessageBoxButtons.YesNo);
                        if (dialogResult2 == DialogResult.Yes)
                        {
                            SqlCommand consulta = new SqlCommand("INSERT INTO ALL_IN.Viaje values('" + textBox2.Text + "',Convert(DateTime,'" + date.ToString() + " " + comboBox1.Text + ":00',120),'" + textBox5.Text + "',NULL,Convert(DateTime,'" + date2.ToString() + " " + comboBox2.Text + ":00',120),0)");
                            db.executeQuery(consulta);
                            MessageBox.Show("Se ha generado el viaje");
                            textBox1.Text = "";
                            textBox2.Text = "";
                            textBox3.Text = "";
                            textBox4.Text = "";
                            textBox5.Text = "";
                            textBox6.Text = "";
                            comboBox1.Text = "";

                        }

                    }
                }
            }

        }

        private void GenerarViaje_Load(object sender, EventArgs e)
        {
            dateTimePicker1.MinDate = Convert.ToDateTime(System.Configuration.ConfigurationManager.AppSettings["Fecha"]);
            dateTimePicker2.MinDate = Convert.ToDateTime(System.Configuration.ConfigurationManager.AppSettings["Fecha"]);
            comboBox1.Text = "00";
            comboBox2.Text = "00";
        }

        internal void populate()
        {
            textBox2.Text = patente;
            textBox4.Text = Servicio;
        }

        internal void populate2()
        {
            textBox1.Text = Origen;
            textBox3.Text = Destino;
            textBox5.Text = IDRecorrido;
            textBox6.Text = TipoServicio;
        }

        private void label5_Click(object sender, EventArgs e)
        {

        }

        private void textBox5_TextChanged(object sender, EventArgs e)
        {

        }
    }
}
